This is a deadlock.
The following is an example of deadlock thread dump:
"Thread-1": waiting to lock monitor 0x0000000008b6eab8 (object 0x00000000ec6105a8,More details about this bug are at DERBY-764 JIRA page.
a org.apache.derby.impl.services.reflect.UpdateLoader), which is held by "Thread-0"
"Thread-0": waiting to lock monitor 0x000000000bafb528 (object 0x00000000ed2e6298,
a org.apache.derby.impl.services.locks.LockSet), which is held by "Thread-1"
Java stack information for the threads listed above:
===================================================
"Thread-1":
at org.apache.derby.impl.services.reflect.UpdateLoader.needReload(UpdateLoader.java:366)
- waiting to lock <0x00000000ec6105a8> (a org.apache.derby.impl.services.reflect.UpdateLoader) at org.apache.derby.impl.services.reflect.ClassLoaderLock.unlockEvent(UpdateLoader.java:434) at org.apache.derby.impl.services.locks.Lock.unlock(Lock.java:131) at org.apache.derby.impl.services.locks.Lock.unlock(Lock.java:208) at org.apache.derby.impl.services.locks.LockSet.unlock(LockSet.java:521) - locked <0x00000000ed2e6298> (a org.apache.derby.impl.services.locks.LockSet) at org.apache.derby.impl.services.locks.LockSpace.unlockGroup(LockSpace.java:147) - locked <0x00000000ec6daa78> (a org.apache.derby.impl.services.locks.LockSpace) at org.apache.derby.impl.services.locks.AbstractPool.unlockGroup(AbstractPool.java:214) at org.apache.derby.impl.services.locks.LockOperator.unlock(LockOperator.java:32) at org.apache.derby.impl.services.reflect.Derby764$Thread2.run(Derby764.java:62) "Thread-0": at org.apache.derby.impl.services.locks.LockSet.lockObject(LockSet.java:148) - waiting to lock <0x00000000ed2e6298> (a org.apache.derby.impl.services.locks.LockSet) at org.apache.derby.impl.services.locks.AbstractPool.lockObject(AbstractPool.java:119) at org.apache.derby.impl.services.reflect.UpdateLoader.lockClassLoader(UpdateLoader.java:326) at org.apache.derby.impl.services.reflect.UpdateLoader.modifyJar(UpdateLoader.java:290) - locked <0x00000000ec6105a8> (a org.apache.derby.impl.services.reflect.UpdateLoader) at org.apache.derby.impl.services.reflect.Derby764$Thread1.run(Derby764.java:47)
This bug is reproduced under derby 10.5.1.1 and JDK 1.6.0_33.
Execute
the following scripts to run the test to reproduce the bug (assume the
location of the derby test project is derby_test_home).
Linux:
${derby_test_home}/scripts/764.sh
Windows:
%derby_test_home%\scripts\764.bat